const jwt = require('jsonwebtoken');
const config = require('../config');

// 验证 Token
function verifyToken(req, res, next) {

    //如果登录则下一步
    if (req.path === "/api/login") {
        return next()
    }

    //否则则启动中间件
    console.log("TOKEN中间件");

    //获取 Token
    const bearerHeader = req.headers['authorization'];
    console.log(bearerHeader);

    //Token处理
    const bearerToken = bearerHeader.split(' ')[1];

    //如果Token存在
    if (typeof bearerHeader !== 'undefined') {

        //把token信息放在req上  将值传递下去本质是放在请求域内
        req.token = bearerToken;

        // 验证 Token 的有效性
        jwt.verify(req.token, config.jwtSecretKey, (err, authData) => {
            if (err) {
                res.status(403).json({ message: 'Access forbidden' });
                console.log("403");
            } else {
                req.user = authData;
                //这里要进行数据库验证查询


                //如果存在则next
                return next();
            }
        });


    } else {
        res.status(403).json({ message: 'Access forbidden' });
        console.log("403");
    }
}


module.exports = {
    verifyToken,
};